#include "tlv_stream_reader.h"

TLVStreamReader::TLVStreamReader(const TLVBuffer& buffer)
    : TLVReader(buffer), offset_(0) {}

bool TLVStreamReader::hasNext() const {
    return offset_ + 4 <= buffer_.size(); // 至少能读取 Type + Length
}

std::optional<TLV> TLVStreamReader::next() {
    if (!hasNext()) return std::nullopt;

    TLV item;
    if (!buffer_.readTLV(offset_, item)) return std::nullopt;

    offset_ += 4 + item.length;
    return item;
}

void TLVStreamReader::reset() {
    offset_ = 0;
}
